home *** CD-ROM | disk | FTP | other *** search
/ OpenGL Superbible (2nd Edition) / OpenGL SuperBible e2.iso / tools / GLUT-3.7 / LIB / GLE / ROT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-12  |  2.0 KB  |  99 lines

  1.  
  2. /*
  3.  * rot.h
  4.  *
  5.  * FUNCTION:
  6.  * rotation matrix utilities
  7.  *
  8.  * HISTORY:
  9.  * Linas Vepstas Aug 1990
  10.  */
  11.  
  12. /* ========================================================== */
  13. /* 
  14.  * The MACROS below generate and return more traditional rotation
  15.  * matrices -- matrices for rotations about principal axes.
  16.  */
  17. /* ========================================================== */
  18.  
  19. #define ROTX_CS(m,cosine,sine)        \
  20. {                    \
  21.    /* rotation about the x-axis */    \
  22.                     \
  23.    m[0][0] = 1.0;            \
  24.    m[0][1] = 0.0;            \
  25.    m[0][2] = 0.0;            \
  26.    m[0][3] = 0.0;            \
  27.                     \
  28.    m[1][0] = 0.0;            \
  29.    m[1][1] = (cosine);            \
  30.    m[1][2] = (sine);            \
  31.    m[1][3] = 0.0;            \
  32.                     \
  33.    m[2][0] = 0.0;            \
  34.    m[2][1] = -(sine);            \
  35.    m[2][2] = (cosine);            \
  36.    m[2][3] = 0.0;            \
  37.                     \
  38.    m[3][0] = 0.0;            \
  39.    m[3][1] = 0.0;            \
  40.    m[3][2] = 0.0;            \
  41.    m[3][3] = 1.0;            \
  42. }                
  43.  
  44. /* ========================================================== */
  45.  
  46. #define ROTY_CS(m,cosine,sine)        \
  47. {                    \
  48.    /* rotation about the y-axis */    \
  49.                     \
  50.    m[0][0] = (cosine);            \
  51.    m[0][1] = 0.0;            \
  52.    m[0][2] = -(sine);            \
  53.    m[0][3] = 0.0;            \
  54.                     \
  55.    m[1][0] = 0.0;            \
  56.    m[1][1] = 1.0;            \
  57.    m[1][2] = 0.0;            \
  58.    m[1][3] = 0.0;            \
  59.                     \
  60.    m[2][0] = (sine);            \
  61.    m[2][1] = 0.0;            \
  62.    m[2][2] = (cosine);            \
  63.    m[2][3] = 0.0;            \
  64.                     \
  65.    m[3][0] = 0.0;            \
  66.    m[3][1] = 0.0;            \
  67.    m[3][2] = 0.0;            \
  68.    m[3][3] = 1.0;            \
  69. }
  70.  
  71. /* ========================================================== */
  72.  
  73. #define ROTZ_CS(m,cosine,sine)        \
  74. {                    \
  75.    /* rotation about the z-axis */    \
  76.                     \
  77.    m[0][0] = (cosine);            \
  78.    m[0][1] = (sine);            \
  79.    m[0][2] = 0.0;            \
  80.    m[0][3] = 0.0;            \
  81.                     \
  82.    m[1][0] = -(sine);            \
  83.    m[1][1] = (cosine);            \
  84.    m[1][2] = 0.0;            \
  85.    m[1][3] = 0.0;            \
  86.                     \
  87.    m[2][0] = 0.0;            \
  88.    m[2][1] = 0.0;            \
  89.    m[2][2] = 1.0;            \
  90.    m[2][3] = 0.0;            \
  91.                     \
  92.    m[3][0] = 0.0;            \
  93.    m[3][1] = 0.0;            \
  94.    m[3][2] = 0.0;            \
  95.    m[3][3] = 1.0;            \
  96. }
  97.  
  98. /* ========================================================== */
  99.